function [h_est] = Function_Channel_Estimate_Process(y, x, Channel_Est_Method)
	%chan_estimate Main function performing channel estimation
	% Inputs:      y                     - M_sc � N_pilots matrix with each column corresponding to a received DMRS symbol. M_sc is the
	%                                      number of (contiguous) SC-OFDM subcarriers occupied by the DMRS symbols, N_pilots is the number of
	%                                      DMRS symbols used within the subframe.
	%              x                     - The corresponding M_sc � N_pilots matrix of transmitted DMRS symbols
	% Outputs:     h_est_grid            - M_sc �(2�NSLsymb) matrix with the i-th column corresponding to the channel estimate for the i-th SC-FDMA symbol of the subframe.
	%              var_n_est             - real-valued scalar representing an estimate of the noise variance affecting the transmission.

	% obtain the LS channel estimate per DMRS SC-FDMA symbol
    h_LS = y.*conj(x);
            
	% refine each LS estimate by frequency domain filtering
	if strcmp(Channel_Est_Method,'LS')
        h_est = h_LS;
	elseif strcmp(Channel_Est_Method,'mmse-direct')
        h_est = Function_Channel_Estimation_MMSE_Direct();
	elseif strcmp(Channel_Est_Method,'mmse-FFT')
        h_est = Function_Channel_Estimation_FFT();
	elseif strcmp(Channel_Est_Method,'moving-average')
     	h_est = Function_Channel_Estimation_Moving_Average();
    end
            